﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Tibet.Logica
{
    public class ReglaDeNombre : Regla
    {
        private string _nombreclase;

        public string NNombreclase
        {
            get { return _nombreclase; }
            set { _nombreclase = value; }
        }
        private string _nombreatributo;

        public string nombreatributo
        {
            get { return _nombreatributo; }
            set { _nombreatributo = value; }
        }
        private string _nombremetodo;

        public string nombremetodo
        {
            get { return _nombremetodo; }
            set { _nombremetodo = value; }
        }
        private string _nombreinterfaz;

        public string nombreinterfaz
        {
            get { return _nombreinterfaz; }
            set { _nombreinterfaz = value; }
        }
        private string _nombrepaquete;

        public string nombrepaquete
        {
            get { return _nombrepaquete; }
            set { _nombrepaquete = value; }
        }

        /**
         * Método para validar la correcta implementación del estándar actual 
         * para el nombramiento de clases
         */
        public bool ValidarClase(string nombre)
        {
            bool resp = false;
            
            //Si el nombre de la clase cumple con el estándar definido: NombreClase
            if (nombre.Equals("nombreClase")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;
            
            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para el nombramiento de atributos
         */
        public bool ValidarAtributo(string nombre)
        {
            bool resp = false;

            //Si el nombre del atributo cumple con el estándar definido: NombreAtributo
            if (nombre.Equals("nombreAtributo")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para el nombramiento de métodos
         */
        public bool ValidarMetodo(string nombre)
        {
            bool resp = false;

            //Si el nombre del método cumple con el estándar definido: NombreMetodo
            if (nombre.Equals("nombreMetodo")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para el nombramiento de interfaces
         */
        public bool ValidarInterfaz(string nombre)
        {
            bool resp = false;

            //Si el nombre de la interfaz cumple con el estándar definido: NombreInterfaz
            if (nombre.Equals("nombreInterfaz")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para validar la correcta implementación del estándar actual
         * para el nombramiento de paquetes
         */
        public bool ValidarPaquete(string nombre)
        {
            bool resp = false;

            //Si el nombre del paquete cumple con el estándar definido: NombrePaquete
            if (nombre.Equals("nombrePaquete")) //Este condicional sólo sirve para ejecutar la PU
                resp = true;

            return resp;
        }

        /**
         * Método para extraer todas las reglas almacenadas
         */
        public List<ReglaDeNombre> consultarReglas()
        {
            ReglaDeNombre r = new ReglaDeNombre();

            List<ReglaDeNombre> lista = new List<ReglaDeNombre>();

            //bd
            r.nombreregla  = "Regla1";            

            lista.Add(r);

            return lista;
        }

        /**
         * Método para extraer las reglas por nombre
         */
        public ReglaDeNombre consultarReglaPorNombre(string nombre)
        {
            ReglaDeNombre r = new ReglaDeNombre();

            //bd
            nombre = "Regla1";
            r.nombreregla = nombre;

            return r;
        } 
    }
}